﻿using System;
using System.ComponentModel;

namespace Esponce.Models
{
	public class TrackListItem : INotifyPropertyChanged
	{
		#region Public properties
		public string Id
		{
			get
			{
				return this.id;
			}
			set
			{
				if (this.id != value)
				{
					this.id = value;
					OnPropertyChanged("Id");
				}
			}
		}
		private string id;

		public string Type
		{
			get
			{
				return this.type;
			}
			set
			{
				if (this.type != value)
				{
					this.type = value;
					OnPropertyChanged("Type");
				}
			}
		}
		private string type;

		public string Name
		{
			get
			{
				return this.name;
			}
			set
			{
				if (this.name != value)
				{
					this.name = value;
					OnPropertyChanged("Name");
				}
			}
		}
		private string name;

		public string Info
		{
			get
			{
				return this.info;
			}
			set
			{
				if (this.info != value)
				{
					this.info = value;
					OnPropertyChanged("Info");
				}
			}
		}
		private string info;

		public DateTime? Created
		{
			get
			{
				return this.created;
			}
			set
			{
				if (this.created != value)
				{
					this.created = value;
					OnPropertyChanged("Created");
				}
			}
		}
		private DateTime? created;

		public bool IsCampaign
		{
			get
			{
				return this.isCampaign;
			}
			set
			{
				if (this.isCampaign != value)
				{
					this.isCampaign = value;
					OnPropertyChanged("IsCampaign");
				}
			}
		}
		private bool isCampaign;

		public bool IsAvailable
		{
			get
			{
				return this.isAvailable;
			}
			set
			{
				if (this.isAvailable != value)
				{
					this.isAvailable = value;
					OnPropertyChanged("IsAvailable");
				}
			}
		}
		private bool isAvailable;

		public int? Scans
		{
			get
			{
				return this.scans;
			}
			set
			{
				if (this.scans != value)
				{
					this.scans = value;
					OnPropertyChanged("Scans");
				}
			}
		}
		private int? scans;
		#endregion

		#region INotifyPropertyChanged Members
		public event PropertyChangedEventHandler PropertyChanged;
		protected virtual void OnPropertyChanged(string propertyName)
		{
			if (PropertyChanged != null)
			{
				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
			}
		}
		#endregion
	}
}
